package server.command;

import java.util.Collection;

import server.core.manager.Manager;

import communication.exception.ResultException;
import communication.exception.VerifyParameterException;


public interface Command {
	
	/**
	 * @return result-Collection
	 * @throws NullResultExeption 
	 * @throws ResultException
	 */
	public Collection<Object> execute() throws ResultException;
	
	/**
	 * Set parameter after parsing
	 * @throws VerifyParameterException 
	 * 
	 */
	public void verifyParam(AnalysisCommand parsing) throws VerifyParameterException;
	
	public void exit();
	
	/**
	 * @return information about command.
	 *  usually like " param1=type1"
	 */
	public String help();
	
	/**
	 * @return Manager class of command
	 */
	public Class<? extends Manager> getManager();

}
